package settings.model;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class Settings {

    private File lastOutputDir;
    private boolean optionsAlwaysConfirm, optionsShowExactMatch;
    private boolean optionsShowOnlyFound, optionsStopOnSearchError;
    private boolean optionsNoRuleMatchTakeFirst, optionsAutomaticDownloadSelection;
    private List<MappingBierdopjeScene> mappingList;
    private List<SettingsExcludeItem> excludeList;
    private List<String> qualityRuleList;
    private LibrarySettings movieLibrarySettings;
    private LibrarySettings episodeLibrarySettings;
    private String generalProxyHost;
    private int generalProxyPort;
    private boolean generalProxyEnabled;
    private List<File> defaultIncomingFolders;
    private boolean optionRecursive;
    private ScreenSettings screenSettings;

    public Settings() {
    	setDefaultIncomingFolders(new ArrayList<File>());
        lastOutputDir = null;
        optionsAlwaysConfirm = false;
        optionsShowExactMatch = false;
        optionsShowOnlyFound = false;
        optionsStopOnSearchError = false;
        optionsNoRuleMatchTakeFirst = false;
        optionsAutomaticDownloadSelection = false;
        mappingList = new ArrayList<MappingBierdopjeScene>();
        qualityRuleList = new ArrayList<String>();
        setExcludeList(new ArrayList<SettingsExcludeItem>());
        movieLibrarySettings = new LibrarySettings();
        episodeLibrarySettings = new LibrarySettings();
        generalProxyHost = "";
        generalProxyPort = 80;
        generalProxyEnabled = false;
        optionRecursive = false;
        screenSettings = new ScreenSettings();
    }

    public boolean isOptionsAlwaysConfirm() {
        return optionsAlwaysConfirm;
    }

    public void setOptionsAlwaysConfirm(boolean optionsAlwaysConfirm) {
        this.optionsAlwaysConfirm = optionsAlwaysConfirm;
    }

    public boolean isOptionsShowExactMatch() {
        return optionsShowExactMatch;
    }

    public void setOptionsShowExactMatch(boolean optionsShowExactMatch) {
        this.optionsShowExactMatch = optionsShowExactMatch;
    }

    public boolean isOptionsShowOnlyFound() {
        return optionsShowOnlyFound;
    }

    public void setOptionsShowOnlyFound(boolean optionsShowOnlyFound) {
        this.optionsShowOnlyFound = optionsShowOnlyFound;
    }

    public void setLastOutputDir(File lastOutputDir) {
        this.lastOutputDir = lastOutputDir;
    }

    public File getLastOutputDir() {
        return lastOutputDir;
    }

    public List<MappingBierdopjeScene> getMappingList() {
        return mappingList;
    }

    public void setMappingList(List<MappingBierdopjeScene> mappingList) {
        this.mappingList = mappingList;
    }

    public void setExcludeList(List<SettingsExcludeItem> excludeList) {
        this.excludeList = excludeList;
    }

    public List<SettingsExcludeItem> getExcludeList() {
        return excludeList;
    }

    public void setOptionsStopOnSearchError(boolean optionsStopOnSearchError) {
        this.optionsStopOnSearchError = optionsStopOnSearchError;
    }

    public boolean isOptionsStopOnSearchError() {
        return optionsStopOnSearchError;
    }

    public void setQualityRuleList(List<String> qualityRuleList) {
        this.qualityRuleList = qualityRuleList;
    }

    public List<String> getQualityRuleList() {
        return qualityRuleList;
    }

    public void setOptionsNoRuleMatchMatchTakeFirst(boolean optionsNoRuleMatchMatchTakeFirst) {
        this.optionsNoRuleMatchTakeFirst = optionsNoRuleMatchMatchTakeFirst;
    }

    public boolean isOptionsNoRuleMatchTakeFirst() {
        return optionsNoRuleMatchTakeFirst;
    }

    public void setOptionsAutomaticDownloadSelection(
            boolean optionsAutomaticDownloadSelection) {
        this.optionsAutomaticDownloadSelection = optionsAutomaticDownloadSelection;
    }

    public boolean isOptionsAutomaticDownloadSelection() {
        return optionsAutomaticDownloadSelection;
    }

    public void setEpisodeLibrarySettings(LibrarySettings episodeLibrarySettings) {
        this.episodeLibrarySettings = episodeLibrarySettings;
    }

    public LibrarySettings getEpisodeLibrarySettings() {
        return episodeLibrarySettings;
    }

    public void setMovieLibrarySettings(LibrarySettings movieLibrarySettings) {
        this.movieLibrarySettings = movieLibrarySettings;
    }

    public LibrarySettings getMovieLibrarySettings() {
        return movieLibrarySettings;
    }

    public String getGeneralProxyHost() {
        return generalProxyHost;
    }

    public void setGeneralProxyHost(String generalProxyHost) {
        this.generalProxyHost = generalProxyHost;
    }

    public int getGeneralProxyPort() {
        return generalProxyPort;
    }

    public void setGeneralProxyPort(int generalProxyPort) {
        this.generalProxyPort = generalProxyPort;
    }

    public boolean isGeneralProxyEnabled() {
        return generalProxyEnabled;
    }

    public void setGeneralProxyEnabled(boolean generalProxyEnabled) {
        this.generalProxyEnabled = generalProxyEnabled;
    }

	public void setDefaultIncomingFolders(List<File> defaultIncomingFolders) {
		this.defaultIncomingFolders = defaultIncomingFolders;
	}

	public List<File> getDefaultIncomingFolders() {
		return defaultIncomingFolders;
	}

	public void setOptionRecursive(boolean optionRecursive) {
		this.optionRecursive = optionRecursive;
	}

	public boolean isOptionRecursive() {
		return optionRecursive;
	}

    public ScreenSettings getScreenSettings() {
        return screenSettings;
    }

    public void setScreenSettings(ScreenSettings screenSettings) {
        this.screenSettings = screenSettings;
    }
}